μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ μ€νΈλ¦Όμ μ¬μΈ΅ λΆμνκ³ , μ΅μ μΉ μ ν리μΌμ΄μ μμμ μ€νΈλ¦Ό μ°μ° μ²λ¦¬ μλλ₯Ό μν μ±λ₯ κ³ λ €μ¬ν λ° μ΅μ ν κΈ°λ²μ μ΄μ μ λ§μΆ₯λλ€.
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ μ€νΈλ¦Ό μ±λ₯: μ€νΈλ¦Ό μ°μ° μ²λ¦¬ μλ
νν μ€νΈλ¦Ό λλ νμ΄νλΌμΈμ΄λΌκ³ λΆλ¦¬λ μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌλ λ°μ΄ν° 컬λ μ μ μ²λ¦¬νλ κ°λ ₯νκ³ μ°μν λ°©λ²μ μ 곡ν©λλ€. μ΄λ λ°μ΄ν° μ‘°μμ λν ν¨μν μ κ·Ό λ°©μμ μ 곡νμ¬ κ°λ°μκ° κ°κ²°νκ³ ννλ ₯ μλ μ½λλ₯Ό μμ±ν μ μκ² ν΄μ€λλ€. κ·Έλ¬λ μ€νΈλ¦Ό μ°μ°μ μ±λ₯μ νΉν λμ©λ λ°μ΄ν°μ μ΄λ μ±λ₯μ λ―Όκ°ν μ ν리μΌμ΄μ μ λ€λ£° λ μ€μν κ³ λ €μ¬νμ λλ€. μ΄ κΈμμλ μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ μ€νΈλ¦Όμ μ±λ₯ μΈ‘λ©΄μ νꡬνκ³ , ν¨μ¨μ μΈ μ€νΈλ¦Ό μ°μ° μ²λ¦¬ μλλ₯Ό 보μ₯νκΈ° μν μ΅μ ν κΈ°λ²κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό μμΈν μ΄ν΄λ΄ λλ€.
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ μκ°
μ΄ν°λ μ΄ν° ν¬νΌλ μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν° μ²λ¦¬ λ₯λ ₯μ ν¨μν νλ‘κ·Έλλ° ν¨λ¬λ€μμ λμ ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ μ°μ°μ ν¨κ» μ°κ²°νμ¬ κ°μ μνμ€λ₯Ό λ³ννλ νμ΄νλΌμΈμ λ§λ€ μ μμ΅λλ€. μ΄ ν¬νΌλ€μ ν λ²μ νλμ© κ°μ μνμ€λ₯Ό μ 곡νλ κ°μ²΄μΈ μ΄ν°λ μ΄ν°μμ μλν©λλ€. λ°°μ΄, μΈνΈ, λ§΅, μ¬μ§μ΄ μ¬μ©μ μ μ λ°μ΄ν° ꡬ쑰κΉμ§ μ΄ν°λ μ΄ν°λ‘ μ·¨κΈλ μ μλ λ°μ΄ν° μμ€μ μμ λλ€.
μΌλ°μ μΈ μ΄ν°λ μ΄ν° ν¬νΌλ λ€μκ³Ό κ°μ΅λλ€:
- map: μ€νΈλ¦Όμ κ° μμλ₯Ό λ³νν©λλ€.
- filter: μ£Όμ΄μ§ 쑰건μ λ§μ‘±νλ μμλ₯Ό μ νν©λλ€.
- reduce: κ°λ€μ λ¨μΌ κ²°κ³Όλ‘ λμ ν©λλ€.
- forEach: κ° μμμ λν΄ ν¨μλ₯Ό μ€νν©λλ€.
- some: νλ μ΄μμ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ νμΈν©λλ€.
- every: λͺ¨λ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ νμΈν©λλ€.
- find: 쑰건μ λ§μ‘±νλ 첫 λ²μ§Έ μμλ₯Ό λ°νν©λλ€.
- findIndex: 쑰건μ λ§μ‘±νλ 첫 λ²μ§Έ μμμ μΈλ±μ€λ₯Ό λ°νν©λλ€.
- take: μ²μ `n`κ°μ μμλ§ ν¬ν¨νλ μ μ€νΈλ¦Όμ λ°νν©λλ€.
- drop: μ²μ `n`κ°μ μμλ₯Ό μλ΅ν μ μ€νΈλ¦Όμ λ°νν©λλ€.
μ΄λ¬ν ν¬νΌλ€μ ν¨κ» μ°κ²°λμ΄ λ³΅μ‘ν λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈμ λ§λ€ μ μμ΅λλ€. μ΄λ¬ν μ°κ²°μ±μ μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν΅λλ€.
μμ : μ«μ λ°°μ΄μ λ³ννκ³ μ§μλ₯Ό κ±Έλ¬λ΄κΈ°:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const oddSquares = numbers
.filter(x => x % 2 !== 0)
.map(x => x * x);
console.log(oddSquares); // Output: [1, 9, 25, 49, 81]
μ§μ° νκ°μ μ€νΈλ¦Ό μ±λ₯
μ΄ν°λ μ΄ν° ν¬νΌμ μ£Όμ μ₯μ μ€ νλλ μ§μ° νκ°(lazy evaluation)λ₯Ό μνν μ μλ€λ κ²μ λλ€. μ§μ° νκ°λ μ°μ° κ²°κ³Όκ° μ€μ λ‘ νμν λλ§ μ€νλλ€λ κ²μ μλ―Έν©λλ€. μ΄λ νΉν λμ©λ λ°μ΄ν°μ μ λ€λ£° λ μλΉν μ±λ₯ ν₯μμ κ°μ Έμ¬ μ μμ΅λλ€.
λ€μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
const largeArray = Array.from({ length: 1000000 }, (_, i) => i + 1);
const firstFiveSquares = largeArray
.map(x => {
console.log("Mapping: " + x);
return x * x;
})
.filter(x => {
console.log("Filtering: " + x);
return x % 2 !== 0;
})
.slice(0, 5);
console.log(firstFiveSquares); // Output: [1, 9, 25, 49, 81]
μ§μ° νκ°κ° μλ€λ©΄, `map` μ°μ°μ κΆκ·Ήμ μΌλ‘ μ²μ λ€μ― κ°μ μ κ³±λ νμλ§ νμνλ°λ λΆκ΅¬νκ³ 1,000,000κ°μ λͺ¨λ μμμ μ μ©λ κ²μ λλ€. μ§μ° νκ°λ `map`κ³Ό `filter` μ°μ°μ΄ λ€μ― κ°μ μ κ³±λ νμλ₯Ό μ°Ύμ λκΉμ§λ§ μ€νλλλ‘ λ³΄μ₯ν©λλ€.
νμ§λ§ λͺ¨λ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ΄ν°λ μ΄ν° ν¬νΌμ λν μ§μ° νκ°λ₯Ό μλ²½νκ² μ΅μ ννλ κ²μ μλλλ€. μ΄λ€ κ²½μ°μλ μ΄ν°λ μ΄ν°λ₯Ό μμ±νκ³ κ΄λ¦¬νλ λ° λ°λ₯΄λ μ€λ²ν€λ λλ¬Έμ μ§μ° νκ°μ μ±λ₯ μ΄μ μ΄ μ νλ μ μμ΅λλ€. λ°λΌμ λ€μν μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ΄λ»κ² μ²λ¦¬νλμ§ μ΄ν΄νκ³ , μ μ¬μ μΈ μ±λ₯ λ³λͺ© νμμ μλ³νκΈ° μν΄ μ½λλ₯Ό λ²€μΉλ§νΉνλ κ²μ΄ μ€μν©λλ€.
μ±λ₯ κ³ λ €μ¬ν λ° μ΅μ ν κΈ°λ²
λͺ κ°μ§ μμΈμ΄ μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ μ€νΈλ¦Όμ μ±λ₯μ μν₯μ λ―ΈμΉ μ μμ΅λλ€. λ€μμ λͺ κ°μ§ μ£Όμ κ³ λ €μ¬ν λ° μ΅μ ν κΈ°λ²μ λλ€:
1. μ€κ° λ°μ΄ν° ꡬ쑰 μ΅μν
κ° μ΄ν°λ μ΄ν° ν¬νΌ μ°μ°μ μΌλ°μ μΌλ‘ μλ‘μ΄ μ€κ° μ΄ν°λ μ΄ν°λ₯Ό μμ±ν©λλ€. μ΄λ νΉν μ¬λ¬ μ°μ°μ ν¨κ» μ°κ²°ν λ λ©λͺ¨λ¦¬ μ€λ²ν€λμ μ±λ₯ μ νλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μ΄ μ€λ²ν€λλ₯Ό μ΅μννλ €λ©΄ κ°λ₯ν λλ§λ€ μ°μ°μ λ¨μΌ ν¨μ€λ‘ κ²°ν©νμμμ€.
μμ : `map`κ³Ό `filter`λ₯Ό λ¨μΌ μ°μ°μΌλ‘ κ²°ν©νκΈ°:
// λΉν¨μ¨μ :
const numbers = [1, 2, 3, 4, 5];
const oddSquares = numbers
.filter(x => x % 2 !== 0)
.map(x => x * x);
// λ ν¨μ¨μ :
const oddSquaresOptimized = numbers
.map(x => (x % 2 !== 0 ? x * x : null))
.filter(x => x !== null);
μ΄ μμ μμ μ΅μ νλ λ²μ μ νμμ λν΄μλ§ μ‘°κ±΄λΆλ‘ μ κ³±μ κ³μ°ν λ€μ `null` κ°μ κ±Έλ¬λμΌλ‘μ¨ μ€κ° λ°°μ΄ μμ±μ νΌν©λλ€.
2. λΆνμν λ°λ³΅ νΌνκΈ°
λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈμ μ μ€νκ² λΆμνμ¬ λΆνμν λ°λ³΅μ μλ³νκ³ μ κ±°νμμμ€. μλ₯Ό λ€μ΄, λ°μ΄ν°μ μΌλΆλ§ μ²λ¦¬ν΄μΌ νλ κ²½μ° `take` λλ `slice` ν¬νΌλ₯Ό μ¬μ©νμ¬ λ°λ³΅ νμλ₯Ό μ ννμμμ€.
μμ : μ²μ 10κ° μμλ§ μ²λ¦¬νκΈ°:
const largeArray = Array.from({ length: 1000 }, (_, i) => i + 1);
const firstTenSquares = largeArray
.slice(0, 10)
.map(x => x * x);
μ΄λ κ² νλ©΄ `map` μ°μ°μ΄ μ²μ 10κ° μμμλ§ μ μ©λλ―λ‘ λμ©λ λ°°μ΄μ λ€λ£° λ μ±λ₯μ΄ ν¬κ² ν₯μλ©λλ€.
3. ν¨μ¨μ μΈ λ°μ΄ν° ꡬ쑰 μ¬μ©
λ°μ΄ν° ꡬ쑰μ μ νμ μ€νΈλ¦Ό μ°μ°μ μ±λ₯μ μλΉν μν₯μ λ―ΈμΉ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μμμ μ‘΄μ¬ μ¬λΆλ₯Ό μμ£Ό νμΈν΄μΌ νλ κ²½μ° `Array` λμ `Set`μ μ¬μ©νλ©΄ `filter` μ°μ°μ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
μμ : ν¨μ¨μ μΈ νν°λ§μ μν΄ `Set` μ¬μ©νκΈ°:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const evenNumbersSet = new Set([2, 4, 6, 8, 10]);
const oddNumbers = numbers.filter(x => !evenNumbersSet.has(x));
`Set`μ `has` λ©μλλ νκ· μκ° λ³΅μ‘λκ° O(1)μΈ λ°λ©΄, `Array`μ `includes` λ©μλλ μκ° λ³΅μ‘λκ° O(n)μ λλ€. λ°λΌμ λμ©λ λ°μ΄ν°μ μ λ€λ£° λ `Set`μ μ¬μ©νλ©΄ `filter` μ°μ°μ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
4. νΈλμ€λμ μ¬μ© κ³ λ €
νΈλμ€λμ(Transducers)λ μ¬λ¬ μ€νΈλ¦Ό μ°μ°μ λ¨μΌ ν¨μ€λ‘ κ²°ν©ν μ μκ² ν΄μ£Όλ ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ λλ€. μ΄λ μ€κ° μ΄ν°λ μ΄ν°λ₯Ό μμ±νκ³ κ΄λ¦¬νλ λ° λ°λ₯΄λ μ€λ²ν€λλ₯Ό ν¬κ² μ€μΌ μ μμ΅λλ€. νΈλμ€λμλ μλ°μ€ν¬λ¦½νΈμ λ΄μ₯λμ΄ μμ§ μμ§λ§, Ramdaμ κ°μ λΌμ΄λΈλ¬λ¦¬μμ νΈλμ€λμ ꡬνμ μ 곡ν©λλ€.
μμ (κ°λ μ ): `map`κ³Ό `filter`λ₯Ό κ²°ν©νλ νΈλμ€λμ:
// (μ΄κ²μ λ¨μνλ κ°λ
μ μμ μ΄λ©°, μ€μ νΈλμ€λμ ꡬνμ λ 볡μ‘ν κ²μ
λλ€)
const mapFilterTransducer = (mapFn, filterFn) => {
return (reducer) => {
return (acc, input) => {
const mappedValue = mapFn(input);
if (filterFn(mappedValue)) {
return reducer(acc, mappedValue);
}
return acc;
};
};
};
//μ¬μ©λ² (κ°μμ reduce ν¨μμ ν¨κ»)
//const result = reduce(mapFilterTransducer(x => x * 2, x => x > 5), [], [1, 2, 3, 4, 5]);
5. λΉλκΈ° μ°μ° νμ©
μ격 μλ²μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ λμ€ν¬μμ νμΌμ μ½λ κ²κ³Ό κ°μ I/O λ°μ΄λ μμ μ μ²λ¦¬ν λλ λΉλκΈ° μ΄ν°λ μ΄ν° ν¬νΌ μ¬μ©μ κ³ λ €νμμμ€. λΉλκΈ° μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©νλ©΄ μ°μ°μ λμμ μννμ¬ λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈμ μ 체 μ²λ¦¬λμ ν₯μμν¬ μ μμ΅λλ€. μ°Έκ³ : μλ°μ€ν¬λ¦½νΈμ λ΄μ₯ λ°°μ΄ λ©μλλ λ³Έμ§μ μΌλ‘ λΉλκΈ°κ° μλλλ€. μΌλ°μ μΌλ‘ `.map()` λλ `.filter()` μ½λ°± λ΄μμ λΉλκΈ° ν¨μλ₯Ό νμ©νλ©°, λμ μμ μ μ²λ¦¬νκΈ° μν΄ `Promise.all()`κ³Ό ν¨κ» μ¬μ©ν μ μμ΅λλ€.
μμ : λΉλκΈ°μ μΌλ‘ λ°μ΄ν° κ°μ Έμ€κ³ μ²λ¦¬νκΈ°:
async function fetchData(url) {
const response = await fetch(url);
return await response.json();
}
async function processData() {
const urls = ['url1', 'url2', 'url3'];
const results = await Promise.all(urls.map(async url => {
const data = await fetchData(url);
return data.map(item => item.value * 2); // μ²λ¦¬ μμ
}));
console.log(results.flat()); // λ°°μ΄μ λ°°μ΄μ ννν
}
processData();
6. μ½λ°± ν¨μ μ΅μ ν
μ΄ν°λ μ΄ν° ν¬νΌμ μ¬μ©λλ μ½λ°± ν¨μμ μ±λ₯μ μ 체 μ±λ₯μ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€. μ½λ°± ν¨μκ° κ°λ₯ν ν ν¨μ¨μ μΈμ§ νμΈνμμμ€. μ½λ°± λ΄μμ 볡μ‘ν κ³μ°μ΄λ λΆνμν μ°μ°μ νΌνμμμ€.
7. μ½λ νλ‘νμΌλ§ λ° λ²€μΉλ§νΉ
μ±λ₯ λ³λͺ© νμμ μλ³νλ κ°μ₯ ν¨κ³Όμ μΈ λ°©λ²μ μ½λλ₯Ό νλ‘νμΌλ§νκ³ λ²€μΉλ§νΉνλ κ²μ λλ€. λΈλΌμ°μ λ Node.jsμμ μ¬μ© κ°λ₯ν νλ‘νμΌλ§ λꡬλ₯Ό μ¬μ©νμ¬ κ°μ₯ λ§μ μκ°μ μλΉνλ ν¨μλ₯Ό μλ³νμμμ€. λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈμ λ€μν ꡬνμ λ²€μΉλ§νΉνμ¬ μ΄λ€ κ²μ΄ κ°μ₯ μ’μ μ±λ₯μ λ΄λμ§ νμΈνμμμ€. `console.time()` λ° `console.timeEnd()`μ κ°μ λꡬλ κ°λ¨ν νμ΄λ° μ 보λ₯Ό μ 곡ν μ μμ΅λλ€. Chrome DevToolsμ κ°μ κ³ κΈ λꡬλ μμΈν νλ‘νμΌλ§ κΈ°λ₯μ μ 곡ν©λλ€.
8. μ΄ν°λ μ΄ν° μμ± μ€λ²ν€λ κ³ λ €
μ΄ν°λ μ΄ν°λ μ§μ° νκ°λ₯Ό μ 곡νμ§λ§, μ΄ν°λ μ΄ν°λ₯Ό μμ±νκ³ κ΄λ¦¬νλ νμ μ체μ μ€λ²ν€λκ° λ°μν μ μμ΅λλ€. λ§€μ° μμ λ°μ΄ν°μ μ κ²½μ° μ΄ν°λ μ΄ν° μμ± μ€λ²ν€λκ° μ§μ° νκ°μ μ΄μ λ³΄λ€ ν΄ μ μμ΅λλ€. μ΄λ¬ν κ²½μ° μ ν΅μ μΈ λ°°μ΄ λ©μλκ° λ μ±λ₯μ΄ μ’μ μ μμ΅λλ€.
μ€μ μμ λ° μ¬λ‘ μ°κ΅¬
μ΄ν°λ μ΄ν° ν¬νΌ μ±λ₯μ μ΅μ νν μ μλ λͺ κ°μ§ μ€μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
μμ 1: λ‘κ·Έ νμΌ μ²λ¦¬
νΉμ μ 보λ₯Ό μΆμΆνκΈ° μν΄ λμ©λ λ‘κ·Έ νμΌμ μ²λ¦¬ν΄μΌ νλ€κ³ μμν΄ λ³΄μμμ€. λ‘κ·Έ νμΌμλ μλ°±λ§ μ€μ΄ ν¬ν¨λ μ μμ§λ§, κ·Έ μ€ μΌλΆλ§ λΆμνλ©΄ λ©λλ€.
λΉν¨μ¨μ μΈ μ κ·Ό λ°©μ: μ 체 λ‘κ·Έ νμΌμ λ©λͺ¨λ¦¬μ μ½μ΄ λ€μΈ λ€μ μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό νν°λ§νκ³ λ³νν©λλ€.
μ΅μ νλ μ κ·Ό λ°©μ: μ€νΈλ¦Ό κΈ°λ° μ κ·Ό λ°©μμ μ¬μ©νμ¬ λ‘κ·Έ νμΌμ ν μ€μ© μ½μ΅λλ€. κ° μ€μ μ½μ λ νν° λ° λ³ν μμ μ μ μ©νμ¬ μ 체 νμΌμ λ©λͺ¨λ¦¬μ λ‘λν νμλ₯Ό μμ±λλ€. λΉλκΈ° μμ μ μ¬μ©νμ¬ νμΌμ μ²ν¬ λ¨μλ‘ μ½μ΄ μ²λ¦¬λμ ν₯μμν΅λλ€.
μμ 2: μΉ μ ν리μΌμ΄μ μ λ°μ΄ν° λΆμ
μ¬μ©μ μ λ ₯μ κΈ°λ°μΌλ‘ λ°μ΄ν° μκ°νλ₯Ό νμνλ μΉ μ ν리μΌμ΄μ μ μκ°ν΄ 보μμμ€. μ ν리μΌμ΄μ μ μκ°νλ₯Ό μμ±νκΈ° μν΄ λμ©λ λ°μ΄ν°μ μ μ²λ¦¬ν΄μΌ ν μ μμ΅λλ€.
λΉν¨μ¨μ μΈ μ κ·Ό λ°©μ: λͺ¨λ λ°μ΄ν° μ²λ¦¬λ₯Ό ν΄λΌμ΄μΈνΈ μΈ‘μμ μννλ©΄ μλ΅ μκ°μ΄ λλ €μ§κ³ μ¬μ©μ κ²½νμ΄ μ νλ μ μμ΅λλ€.
μ΅μ νλ μ κ·Ό λ°©μ: Node.jsμ κ°μ μΈμ΄λ₯Ό μ¬μ©νμ¬ μλ² μΈ‘μμ λ°μ΄ν° μ²λ¦¬λ₯Ό μνν©λλ€. λΉλκΈ° μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν©λλ€. μ¬κ³μ°μ νΌνκΈ° μν΄ λ°μ΄ν° μ²λ¦¬ κ²°κ³Όλ₯Ό μΊμν©λλ€. μκ°νμ νμν λ°μ΄ν°λ§ ν΄λΌμ΄μΈνΈ μΈ‘μΌλ‘ 보λ λλ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌλ λ°μ΄ν° 컬λ μ μ μ²λ¦¬νλ κ°λ ₯νκ³ ννλ ₯ μλ λ°©λ²μ μ 곡ν©λλ€. μ΄ κΈμμ λ Όμλ μ±λ₯ κ³ λ €μ¬νκ³Ό μ΅μ ν κΈ°λ²μ μ΄ν΄ν¨μΌλ‘μ¨ μ€νΈλ¦Ό μ°μ°μ΄ ν¨μ¨μ μ΄κ³ μ±λ₯μ΄ λ°μ΄λλλ‘ λ³΄μ₯ν μ μμ΅λλ€. μ μ¬μ μΈ λ³λͺ© νμμ μλ³νκΈ° μν΄ μ½λλ₯Ό νλ‘νμΌλ§νκ³ λ²€μΉλ§νΉνκ³ , νΉμ μ¬μ© μ¬λ‘μ λ§λ μ¬λ°λ₯Έ λ°μ΄ν° ꡬ쑰μ μκ³ λ¦¬μ¦μ μ ννλ κ²μ μμ§ λ§μμμ€.
μμ½νμλ©΄, μλ°μ€ν¬λ¦½νΈμμ μ€νΈλ¦Ό μ°μ° μ²λ¦¬ μλλ₯Ό μ΅μ ννλ κ²μ λ€μμ ν¬ν¨ν©λλ€:
- μ§μ° νκ°μ μ΄μ κ³Ό νκ³λ₯Ό μ΄ν΄ν©λλ€.
- μ€κ° λ°μ΄ν° ꡬ쑰λ₯Ό μ΅μνν©λλ€.
- λΆνμν λ°λ³΅μ νΌν©λλ€.
- ν¨μ¨μ μΈ λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©ν©λλ€.
- νΈλμ€λμ μ¬μ©μ κ³ λ €ν©λλ€.
- λΉλκΈ° μ°μ°μ νμ©ν©λλ€.
- μ½λ°± ν¨μλ₯Ό μ΅μ νν©λλ€.
- μ½λλ₯Ό νλ‘νμΌλ§νκ³ λ²€μΉλ§νΉν©λλ€.
μ΄λ¬ν μμΉμ μ μ©ν¨μΌλ‘μ¨ μ°μνλ©΄μλ μ±λ₯μ΄ λ°μ΄λ μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μ λ§λ€μ΄ μ°μν μ¬μ©μ κ²½νμ μ 곡ν μ μμ΅λλ€.